package interview.hw_od;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

/**
 * 报文重排序 https://codefun2000.com/p/P1332
 */
public class ReorderMessage {

    /**
     * 抽象一个报文类并实现Comparable接口，重写toString()方法。将数据读入一个报文list，然后Collections.sort(list)排序，最后用stream流连接生成字符串
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //nextInt()不会消费掉换行符，不要混用nextInt()和nextLine()
        int n = Integer.parseInt(sc.nextLine());
        // \\s+表示匹配一个或多个空格
        String[] ss = sc.nextLine().split("\\s+");
        List<Message> messageList = new ArrayList<>(n);
        for (int i = 0;i < n;i++) {
            messageList.add(new Message(ss[i]));
        }
        Collections.sort(messageList);
        //String.join(",", list) list中的元素要实现了特定的接口（String类实现了），因此不能用在这里。通过stream快速连接
        String result = messageList.stream().map(Message::toString).collect(Collectors.joining(" "));
        System.out.println(result);
    }

    static class Message implements Comparable<Message> {
        int id;
        String msg;

        public Message(String str) {
            int i = str.length() - 1;
            for (;i >= 0;i--) {
                //字符值顺序为0-9 A-Z a-z
                //故当字符大于'9'时为字母
                if (str.charAt(i) > '9') break;
            }
            id = Integer.parseInt(str.substring(i+1));
            msg = str.substring(0, i+1);
        }

        @Override
        public int compareTo(Message o) {
            return Integer.compare(id, o.id);
        }

        @Override
        public String toString() {
            return msg;
        }
    }
}
